package com.sca;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.netflix.hystrix.contrib.javanica.annotation.DefaultProperties;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

/**
 * @Desc: 公共统一的熔断设置（方式2）
 * @Author: hwx
 * @Date: 2020/5/27 8:43
 * @Version: v1.0
 **/
@DefaultProperties(defaultFallback = "defaultFallBack")
@RestController
@RequestMapping(value = "/public")
public class DefaultOrderController {

	@Autowired
	private RestTemplate restTemplate;

	/**
	 * 此处使用@HystrixCommand注解时，不用指定降级方法
	 */
	@HystrixCommand
	@RequestMapping(value = "/buy/{id}", method = RequestMethod.GET)
	public String findByServiceName(@PathVariable Integer id) {
		//使用服务名称调用
		String product = restTemplate.getForObject("http://Srv/product/" + id, String.class);
		return product;
	}

	/**
	 * 指定统一的降级方法
	 *   参数 : 没有参数
	 */
	public String defaultFallBack() {
		return "触发统一的降级方法";
	}

}
